查看原文
其他

Python入门买哪本书?分析6000本Python书籍告诉你答案!

辰哥 Python研究者 2022-09-11

(图片来源于网络)


大家好,我是辰哥~

上面这张图是今年9月TIOBE 统计编程语言排行榜,

可以看到Python已经跃居第二,

一旦超越c语言排名第一,将会成为编程语言发展史的一个重要时刻


现在也越来越多的人在开始学习Python

相信大家在学习Pythond的时候都会面临一个这样的问题

应该买哪本python书


辰哥通过采集6000本网上在售的Python书籍

包括(书名-价格-出版社-出版时间-销量


通过可视化分析看看哪本书籍是适合你的?是销量?还是书名?还是值得信赖的出版社?还是价格区间


采集数据


共有100页,每页60条

一共6000条数据(本书)


分析网页

每一页的60本书籍信息都在一个个的li标签中

比如这里本书籍,查看网页源代码可以对应的书名存在哪个网页标签等

大图


url="http://search.dangdang.com/?key=python&act=input&page_index="+str(page)
res = requests.get(url,headers=headers)
text = res.text
selector = etree.HTML(text)
li_list = selector.xpath('//*[@id="component_59"]/li')
print("page="+str(page),len(li_list))
for i in li_list:
   title = i.xpath('.//p[@class="name"]/a/@title')[0]
   price = i.xpath('.//p[@class="price"]/span/text()')[0].replace("¥","")
   date = i.xpath('.//p[@class="search_book_author"]/span[2]/text()')
   out = i.xpath('.//p[@class="search_book_author"]/span[3]/a/text()')
   sale = i.xpath('.//p[@class="search_star_line"]/a/text()')

其中page分别1,2,3,4...,表示第几页

最终采集了6000本书



可视化分析

A.书名词云图

从csv中提取出书名一列,进行绘制词云图


可以看到大部分书名都含有入门以及编程这两个关键词

辰哥猜测是这类命名对于小白来说可能更加有吸引力


此外,目前python在机器学习(人工智能)领域非常热门,相关书籍也随之增加

接着是爬虫书籍分析自动化办公


B.每年出版python书籍数量

从csv中读取出出版时间一列

统计每一本书的出版年份

绘制折线图

time = df["出版时间"].tolist()
dict = {}
for j in [str(i)[0:4for i in time]:
   if(j!="nan"):
       try:
           dict[str(j)] = dict[str(j)] + 1
       except:
           dict[str(j)] = 1
dict = sorted(Counter(dict).items(), key=lambda x: x[0], reverse=False)
key = [i[0for i in dict]
value = [i[1for i in dict]
c = (
    Line()
        .add_xaxis(key)
        .add_yaxis("每年出版Python书籍数量", value, is_smooth=True)
        .set_global_opts(title_opts=opts.TitleOpts(title="数量(Python研究者)"))
        .render("line_smooth.html")
)


可以看到在09年之前,每年出版的Python书籍只有十几到几十本只有

在2010年突发猛增到311本。

辰哥查了一下原因

2010是python第二次火遍全球,是因为OpenStack是一以Python编程语言编写的项目,Python在2010再次火了起来

(OpenStack具体是什么,大家都搜索了解一下)


随后有开始沉默了下去,到2016年至现在,Python的热度就一直不下,迅速猛增~~~

可以看到通过每年出版的Python书籍数量来看,python一直以来的火热程度及增长趋势


C.出版社出版python书籍数量排名

从csv中读取出出版社一列

统计每一本书的属于哪家出版社并累计

out = df["出版社"].tolist()
dict = {}
for j in [str(i) for i in out]:
   if(j!="nan"):
       try:
           dict[str(j)] = dict[str(j)] + 1
       except:
           dict[str(j)] = 1
dict = sorted(Counter(dict).items(), key=lambda x: x[1], reverse=True)

出版Python书籍的出版社太多了

这里辰哥只取前10名的出版进行绘制柱状图


D.Python书籍售价区间

从csv中读取出价格一列

统计价格区间

30以下/[30-50)/[50-70)

[70-100)/[100-120)/[120-150)

[150以上)

out = df["价格"].tolist()
dict = {"30以下":0,"[30-50)":0,"[50-70)":0,
        "[70-100)":0,"[100-120)":0,"[120-150)":0,
        "[150以上":0}
for j in out:
   if(j!="nan"):
       if(int(j)<30):
           dict['30以下'] = dict['30以下']+1
       elif((int(j)<50)):
           dict['[30-50)'] = dict['[30-50)'] + 1
       elif ((int(j) < 70)):
           dict['[50-70)'] = dict['[50-70)'] + 1
       elif ((int(j) < 100)):
           dict['[70-100)'] = dict['[70-100)'] + 1
       elif ((int(j) < 120)):
           dict['[100-120)'] = dict['[100-120)'] + 1
       elif ((int(j) < 150)):
           dict['[120-150)'] = dict['[120-150)'] + 1
       else:
           dict['[150以上'] = dict['[150以上'] + 1
dict = sorted(Counter(dict).items(), key=lambda x: x[1], reverse=True)
key = [i[0for i in dict]
value = [i[1for i in dict]


从图上也可以看到,价格区间越往后,销量也低(30元以下除外)

价格在50-70左右正合适,因此销量相对较佳



最后


1.本文分享了如何进行采集数据,以及对采集的数据进行可视化分析

2.针对6000本Python书籍销量等情况进行分析,分析结果仅出自个人观点,仅供参考

3. 本文仅供学习参考,不做它用。

4.点击【在看】,即可找辰哥领取本文数据集和完整源码

8个很少用,但却很好用的 Python 库,一起来看看吧

2021-09-28

JupyterLab 出 Windows 桌面版了!

2021-09-27

10个超级实用的Python小技巧,可直接套用,省时又省力!

2021-09-26


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存